package aop.croscutting;

import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;

public class LogWriter {
	//여기 생성자로 넣는거 뭐지?
	private Logger logger = Logger.getLogger(LogWriter.class);
	
	public void log(){
		logger.info("처리를 시작합니다.");
	}
	public void beforeLog(JoinPoint jp){
		//JoinPoint - Target(핵심관심사항관련) 정보, 호출시 넘겨준 argument 값들
		Object target = jp.getTarget();//Target 객체
		
		Object [] args = jp.getArgs();
		//핵심 메소드 호출시 받은 매개변수들. 매개변수가 없는 경우 null
		
		if(args!=null){
			System.out.println("jp.getArgs(): 매개변수개수 "+args.length);
			for(Object arg:args){
				System.out.println(arg);
			}
		}
		//호출된 핵심 로직처리 메소드의 구문정보를 가진 객체
		Signature sig = jp.getSignature();
		System.out.println("sig.getName() :"+sig.getName());
		System.out.println("sig.toShortString()"+sig.toShortString());
		System.out.println("sig.toLongString()"+sig.toLongString());
		System.out.println("sig.getDeclaringTypeName()"+sig.getDeclaringTypeName());
		System.out.println("jp.getTarget() :" +target.getClass().getName());
	}
}
